package com.ruoyi.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.system.domain.SysStaff;
import com.ruoyi.system.domain.request.SysStaffRequest;

import java.util.HashMap;
import java.util.List;

/**
 * 教职员工Service接口
 *
 * @author ruoyi
 * @date 2024-11-14
 */
public interface ISysStaffService extends IService<SysStaff> {
    /**
     * 查询教职员工
     *
     * @param staffId 教职员工主键
     * @return 教职员工
     */
    public SysStaff selectSysStaffByStaffId(Long staffId);

    /**
     * 查询教职员工列表
     *
     * @param sysStaffRequest 教职员工
     * @return 教职员工集合
     */
    public List<SysStaff> selectSysStaffList(SysStaffRequest sysStaffRequest);

    /**
     * 新增教职员工
     *
     * @param sysStaff 教职员工
     * @return 结果
     */
    public int insertSysStaff(SysStaff sysStaff);

    /**
     * 修改教职员工
     *
     * @param sysStaff 教职员工
     * @return 结果
     */
    public int updateSysStaff(SysStaff sysStaff);

    /**
     * 批量删除教职员工
     *
     * @param staffIds 需要删除的教职员工主键集合
     * @return 结果
     */
    public int deleteSysStaffByStaffIds(Long[] staffIds);

    /**
     * 删除教职员工信息
     *
     * @param staffId 教职员工主键
     * @return 结果
     */
    public int deleteSysStaffByStaffId(Long staffId);

    /**
     * 导入教职员工信息数据
     *
     * @param sysStaffList
     * @param updateSupport （目前不生效）是否更新支持，如果已存在，则进行更新数据
     * @param operName
     * @return
     */
    String importData(List<SysStaff> sysStaffList, boolean updateSupport, String operName);


    /**
     * 构建教职员工树结构（包含分公司、部门）
     *
     * @return
     */
    List<TreeSelect> buildStaffTreeSelect();

    /**
     * 部门员工数量
     *
     * @return
     */
    List<HashMap<String, Integer>> queryDeptStaffCount();

    List<TreeSelect> buildEnterpriseStaffTreeSelect();
}
